package org.jsola.hr.helper;

import org.jsola.common.ClassKit;
import org.jsola.common.DateKit;
import org.jsola.common.SafeKit;
import org.jsola.hr.dto.SocDispatchEmpAddAddDTO;
import org.jsola.hr.dto.SocDispatchEmpAddUpdateDTO;
import org.jsola.hr.entity.SocDispatchEmpAddDO;
import org.jsola.hr.query.SocDispatchEmpAddQuery;
import org.jsola.hr.service.ISocDispatchEmpAddService;
import org.jsola.hr.vo.SocDispatchEmpAddVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 社保派单员工表_增员
 *
 * @author zhr
 */
@Component
public class SocDispatchEmpAddTestHelper extends BaseTestHelper {
    
    @Autowired
    private ISocDispatchEmpAddService socDispatchEmpAddService;

    /**
     * 生成add测试数据
     * @return SocDispatchEmpAddAddDTO
     */
    public SocDispatchEmpAddAddDTO getSocDispatchEmpAddAddDTO(){
        SocDispatchEmpAddAddDTO socDispatchEmpAddAddDTO = new SocDispatchEmpAddAddDTO();
        socDispatchEmpAddAddDTO.setSocDispatchId(getRandomValue("varchar",32));
        socDispatchEmpAddAddDTO.setYear(getRandomValue("varchar",12));
        socDispatchEmpAddAddDTO.setMonth(getRandomValue("varchar",10));
        socDispatchEmpAddAddDTO.setName(getRandomValue("varchar",50));
        socDispatchEmpAddAddDTO.setPhone(getRandomValue("varchar",20));
        socDispatchEmpAddAddDTO.setIdCard(getRandomValue("varchar",32));
        socDispatchEmpAddAddDTO.setSocProgName(getRandomValue("varchar",100));
        socDispatchEmpAddAddDTO.setSocProgId(getRandomValue("varchar",32));
        socDispatchEmpAddAddDTO.setSocCityName(getRandomValue("varchar",100));
        socDispatchEmpAddAddDTO.setSocCityId(SafeKit.getLong(getRandomValue("bigint",11)));
        socDispatchEmpAddAddDTO.setSocStartDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        socDispatchEmpAddAddDTO.setFundStartDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        socDispatchEmpAddAddDTO.setIsShift(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        socDispatchEmpAddAddDTO.setAssignCompanyId(getRandomValue("varchar",32));
        socDispatchEmpAddAddDTO.setAssignCompanyName(getRandomValue("varchar",100));
        socDispatchEmpAddAddDTO.setRemake(getRandomValue("text",2147483647));
        socDispatchEmpAddAddDTO.setHasSend(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        socDispatchEmpAddAddDTO.setHasReceive(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        socDispatchEmpAddAddDTO.setStatus(SafeKit.getInteger(getRandomValue("tinyint",4)));
        socDispatchEmpAddAddDTO.setPersonalSocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",20)));
        socDispatchEmpAddAddDTO.setPersonalPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",20)));
        socDispatchEmpAddAddDTO.setPersonalAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socDispatchEmpAddAddDTO.setCompanySocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",20)));
        socDispatchEmpAddAddDTO.setCompanyPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",20)));
        socDispatchEmpAddAddDTO.setCompanyAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socDispatchEmpAddAddDTO.setAllAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socDispatchEmpAddAddDTO.setNoError(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        socDispatchEmpAddAddDTO.setCompanyId(getRandomValue("varchar",32));
        socDispatchEmpAddAddDTO.setSort(SafeKit.getInteger(getRandomValue("bigint",11)));
        return socDispatchEmpAddAddDTO;
    }


    /**
     * 生成update测试数据
     * @return SocDispatchEmpAddUpdateDTO
     */
    public SocDispatchEmpAddUpdateDTO getSocDispatchEmpAddUpdateDTO(SocDispatchEmpAddVO socDispatchEmpAddVO){
        return socDispatchEmpAddService.selectDOById(socDispatchEmpAddVO.getId(), SITE_ID).to(SocDispatchEmpAddUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return SocDispatchEmpAddQuery
     */
    public SocDispatchEmpAddQuery getSocDispatchEmpAddQuery() {
        SocDispatchEmpAddQuery socDispatchEmpAddQuery = new SocDispatchEmpAddQuery();
        List<SocDispatchEmpAddDO> socDispatchEmpAddDOList = socDispatchEmpAddService.list(new SocDispatchEmpAddDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(socDispatchEmpAddDOList)) {
            SocDispatchEmpAddDO socDispatchEmpAddDO = socDispatchEmpAddDOList.get(0);
            socDispatchEmpAddQuery = socDispatchEmpAddDO.to(SocDispatchEmpAddQuery.class);
            if (socDispatchEmpAddDO.getSocStartDate() != null) {
                socDispatchEmpAddQuery.setSocStartDateStart(DateKit.getBeforeDay(socDispatchEmpAddDO.getSocStartDate(),-1));
                socDispatchEmpAddQuery.setSocStartDateEnd(DateKit.getBeforeDay(socDispatchEmpAddDO.getSocStartDate(),1));
            }
            if (socDispatchEmpAddDO.getFundStartDate() != null) {
                socDispatchEmpAddQuery.setFundStartDateStart(DateKit.getBeforeDay(socDispatchEmpAddDO.getFundStartDate(),-1));
                socDispatchEmpAddQuery.setFundStartDateEnd(DateKit.getBeforeDay(socDispatchEmpAddDO.getFundStartDate(),1));
            }
        }
        return socDispatchEmpAddQuery;
    }

    /**
     * 保存示例
     * @return SocDispatchEmpAddVO
     */
    public SocDispatchEmpAddVO saveSocDispatchEmpAddExample(){
        SocDispatchEmpAddAddDTO addDTO = this.getSocDispatchEmpAddAddDTO();
        SocDispatchEmpAddVO socDispatchEmpAddVO = socDispatchEmpAddService.save(addDTO,buildTokenUser());
        return socDispatchEmpAddVO;
    }


}

